package com.platform.common.menus;

import javax.servlet.http.HttpServletResponse;

/**
 * describe:
 * 返回状态码枚举
 * 分类描述
 * 分类  区间       描述
 * 1**  100-199     信息，服务器收到请求，需求请求者继续执行
 * 2**  200-299     成功，操作被成功接受并处理
 * 3**  300-399     重定向，需要进一步的操作以完成请求
 * 4**  400-499     客户端错误，请求包含语法错误或无法完成请求
 * 5**  500-599     服务器错误，服务器在请求过程中发生错误
 * @author rainly
 * @date 2019/11/29
 * @time 8:52 上午
 */
public enum ResultCodeEnum {
    /**
     * 成功 200
     */
    SUCCESS(HttpServletResponse.SC_OK,"成功"),
    /**
     * 400
     */
    FAILURE(HttpServletResponse.SC_BAD_REQUEST,"失败"),
    /**
     * 404错误
     */
    NOT_FOUND(HttpServletResponse.SC_NOT_FOUND,"找不到资源"),
    /**
     * 403
     */
    FORBIDDEN(HttpServletResponse.SC_FORBIDDEN,"禁止访问"),
    /**
     * 401
     */
    UNAUTHORIZED(HttpServletResponse.SC_UNAUTHORIZED,"未经授权"),
    /**
     * 请求方式异常
     */
    METHOD_NOT_ALLOWED(HttpServletResponse.SC_METHOD_NOT_ALLOWED,"请求方式错误"),
    /**
     * 媒体类型异常
     */
    UNSUPPORTED_MEDIA_TYPE(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,"请求类型错误"),
    /**
     * 不接受的请求类型
     */
    NOT_ACCEPTABLE(HttpServletResponse.SC_NOT_ACCEPTABLE,"不接受的请求类型"),
    /**
     * RequestBoyd参数缺失
     */
    MESSAGE_NOT_READABLE(402,"RequestBody参数缺失"),

    /**
     * 参数无效
     */
    PARAM_IS_INACTIVE(101,"参数无效"),
    /**
     * 参数为空
     */
    PARAM_IS_BLANK(102,"参数为空"),
    /**
     * 参数类型错误
     */
    PARAM_TYPE_BIND_ERROR(103,"参数类型错误"),
    /**
     * 参数缺失
     */
    PARAM_NOT_COMPLETE(104,"参数缺失"),
    /**
     * 用户没有登录
     */
    USER_NOT_LOGIN_IN(105,"用户没有登录"),
    /**
     * 用户登录异常
     */
    USER_LOGIN_ERROR(106,"用户登录异常"),
    /**
     * 用户不存在
     */
    USER_NOT_EXIST(107,"用户不存在"),
    /**
     * 用户已存在
     */
    USER_HAS_EXISTED(108,"用户已存在"),
    /**
     * 请联系管理员
     */
    SYSTEM_ERROR(109,"请联系管理员")
    ;

    private Integer code;
    private String message;

    ResultCodeEnum(Integer code,String message){
        this.code = code;
        this.message = message;
    }

    public Integer getCode(){
        return this.code;
    }

    public String getMessage() {
        return message;
    }

    public static ResultCodeEnum findEnumByCode(Integer code){
        for (ResultCodeEnum codeEnum: values()) {
            if (codeEnum.code.equals(code)){
                return codeEnum;
            }
        }
        return null;
    }
    
}
